iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
SideProject30

拿到一支Garmin錶,要怎麼開發app?系列 第 18

[Day-18] Monkey C的AppBase

  • 分享至 

  • xImage
  •  

每個Connect IQ App,都必須有一個繼承Application.AppBase的class
在VS Code新建專案時,extension一樣會自動生成,就是那個[專案名稱]App.mc的檔案,
在manifest.xml,也會將這個檔案寫在<iq:application>的entry裡面,

例如,專案取作MyFirstWatchFace,
生成的檔案名就會是MyFirstWatchFaceApp.mc,
在manifest.xml裡面生成的內容就會是entry="MyFirstWatchFaceApp"

MyFirstWatchFaceApp.mc除了作為App的入口之外,也控制著整個app的生命週期,

Connect IQ App的生命週期分為四個狀態,
1.Launch
2.Active
3.Inactive
4.Suspended

其中2~4是API level 4.2.0才開始有的,
也就是說4.2.0以前App只有Launch,要就是啟動,不然就關掉,沒有其他狀態

在launch之後,就會將App物件實例化,並可透過Application.getApp()來呼叫實例化的App物件
在App物件實例化之後,首先會做的動作就是AppBase.onStart(state)
接著系統會取得這個app的初始畫面,
通常取得畫面的寫法會根據不同形況而有所不同,
一般會是使用AppBase.getInitialView()
其他則是還有AppBase.getGlanceView()、AppBase.getGoalView()、AppBase.getPlaybackConfigurationView()

範例如下:

class MySuperApp extends Application.AppBase {
    // if state contains the :resume key and the value
    // is true, then restore app state

    function onStart(state) {
         if ((state != null) && (state.get(:launchedFromGlance)) {
            // Launched from glance
        } else {
            // Launched from activity menu
        }
    }
}

上一篇
[Day-17] Monkey C的manifest.xml
下一篇
[Day-19] 開發新的錶面-1
系列文
拿到一支Garmin錶,要怎麼開發app?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言